@苏苏
2年前 提问
1个回答

为什么 HTTPS 可以防范中间人攻击?

007bug
2年前

因为HTTPS对中间人攻击采取了三种防范措施:

  • 防范直接获取明文

    加密传输报文。当证书验证合法后,在本地生成随机数,通过公钥加密随机数,并把加密后的随机数传输到服务端,服务端通过私钥对随机数进行解密,服务端通过客户端传入的随机数构造对称加密算法,对返回结果内容进行加密后传输。

  • 防范非法中间加密代理

    黑客对客户端伪装成服务器,对服务器伪装成客户端,通过非法代理窃取会话数据。认证站点(客户端向站点发起HTTPS请求,站点返回数字证书。客户端通过数字证书验证所访问的站点是真实的目标站点。)和协商密钥(客户端与站点服务器协商此次会话的对称加密密钥,用于下一阶段的加密传输。)可以防止这种非法代理行为。虽然黑客可以获取站点的证书,伪装成站点服务器接收请求,但黑客没有站点服务器私钥,无法与实现客户端实现密钥交换,不能窃取明文的会话数据。

  • 防范解密历史报文(前向安全性)

    防范解密历史报文,这种安全防护叫前向安全。早期的HTTPS实现中,客户端将会话密钥通过站点公钥加密后,发送给服务器,服务器用私钥解密。此时如果服务器私钥保管不善泄露,黑客如果留存了历史报文,可以解密获取会话密钥,从而还原历史报文数据。目前通过DH算法保证前向安全。在协商密钥阶段,客户端与服务器只交换少量信息,双方便可独立计算出临时会话密钥用于加密。即使黑客事后获取私钥,也不能计算出会话密钥,从而实现前向安全。